home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / Tool Chest / Development Tools & Languages / Macintosh Common Lisp Related / interfaces / PInterface Translator / PInterfaces / OSUtils.p < prev    next >
Encoding:
Text File  |  1993-09-16  |  9.9 KB  |  380 lines  |  [TEXT/MPS ]

  1. {
  2. Created: Sunday, January 6, 1991 at 10:51 PM
  3.     OSUtils.p
  4.     Pascal Interface to the Macintosh Libraries
  5.  
  6.         Copyright Apple Computer, Inc.    1985-1990
  7.         All rights reserved
  8. }
  9.  
  10.  
  11. {$IFC UNDEFINED UsingIncludes}
  12. {$SETC UsingIncludes := 0}
  13. {$ENDC}
  14.  
  15. {$IFC NOT UsingIncludes}
  16.     UNIT OSUtils;
  17.     INTERFACE
  18. {$ENDC}
  19.  
  20. {$IFC UNDEFINED UsingOSUtils}
  21. {$SETC UsingOSUtils := 1}
  22.  
  23. {$I+}
  24. {$SETC OSUtilsIncludes := UsingIncludes}
  25. {$SETC UsingIncludes := 1}
  26. {$IFC UNDEFINED UsingTypes}
  27. {$I $$Shell(PInterfaces)Types.p}
  28. {$ENDC}
  29. {$SETC UsingIncludes := OSUtilsIncludes}
  30.  
  31. CONST
  32. useFree = 0;
  33. useATalk = 1;
  34. useAsync = 2;
  35. useExtClk = 3;                      {Externally clocked}
  36. useMIDI = 4;
  37.  
  38. {*** Environs Equates ***}
  39. curSysEnvVers = 2;                  {Updated to equal latest SysEnvirons version}
  40.  
  41. { Machine Types }
  42. envMac = -1;
  43. envXL = -2;
  44. envMachUnknown = 0;
  45. env512KE = 1;
  46. envMacPlus = 2;
  47. envSE = 3;
  48. envMacII = 4;
  49. envMacIIx = 5;
  50. envMacIIcx = 6;
  51. envSE30 = 7;
  52. envPortable = 8;
  53. envMacIIci = 9;
  54. envMacIIfx = 11;
  55.  
  56. { CPU types }
  57. envCPUUnknown = 0;
  58. env68000 = 1;
  59. env68010 = 2;
  60. env68020 = 3;
  61. env68030 = 4;
  62. env68040 = 5;
  63.  
  64. { Keyboard types }
  65. envUnknownKbd = 0;
  66. envMacKbd = 1;
  67. envMacAndPad = 2;
  68. envMacPlusKbd = 3;
  69. envAExtendKbd = 4;
  70. envStandADBKbd = 5;
  71. envPrtblADBKbd = 6;
  72. envPrtblISOKbd = 7;
  73. envStdISOADBKbd = 8;
  74. envExtISOADBKbd = 9;
  75. false32b = 0;                       {24 bit addressing error}
  76. true32b = 1;                        {32 bit addressing error}
  77.  
  78. { result types for RelString Call }
  79. sortsBefore = -1;                   {first string < second string}
  80. sortsEqual = 0;                     {first string = second string}
  81. sortsAfter = 1;                     {first string > second string}
  82.  
  83. TYPE
  84. QTypes = (dummyType,vType,ioQType,drvQType,evType,fsQType,sIQType,dtQType);
  85.  
  86. TrapType = (OSTrap,ToolTrap);
  87.  
  88. ParamBlkType = (IOParam,FileParam,VolumeParam,CntrlParam,SlotDevParam,MultiDevParam,
  89.     AccessParam,ObjParam,CopyParam,WDParam,FIDParam,CSParam,ForeignPrivParam);
  90.  
  91.  
  92. SysPPtr = ^SysParmType;
  93. SysParmType = PACKED RECORD
  94.     valid: Byte;
  95.     aTalkA: Byte;
  96.     aTalkB: Byte;
  97.     config: Byte;
  98.     portA: INTEGER;
  99.     portB: INTEGER;
  100.     alarm: LONGINT;
  101.     font: INTEGER;
  102.     kbdPrint: INTEGER;
  103.     volClik: INTEGER;
  104.     misc: INTEGER;
  105.     END;
  106.  
  107. {QElemPtr = ^QElem;}
  108.  
  109. QElemPtr = ^QElem;
  110.  
  111. FInfo = RECORD
  112.     fdType: OSType;                 {the type of the file}
  113.     fdCreator: OSType;              {file's creator}
  114.     fdFlags: INTEGER;               {flags ex. hasbundle,invisible,locked, etc.}
  115.     fdLocation: Point;              {file's location in folder}
  116.     fdFldr: INTEGER;                {folder containing file}
  117.     END;
  118.  
  119. VCB = RECORD
  120.     qLink: QElemPtr;
  121.     qType: INTEGER;
  122.     vcbFlags: INTEGER;
  123.     vcbSigWord: INTEGER;
  124.     vcbCrDate: LONGINT;
  125.     vcbLsMod: LONGINT;
  126.     vcbAtrb: INTEGER;
  127.     vcbNmFls: INTEGER;
  128.     vcbVBMSt: INTEGER;
  129.     vcbAllocPtr: INTEGER;
  130.     vcbNmAlBlks: INTEGER;
  131.     vcbAlBlkSiz: LONGINT;
  132.     vcbClpSiz: LONGINT;
  133.     vcbAlBlSt: INTEGER;
  134.     vcbNxtCNID: LONGINT;
  135.     vcbFreeBks: INTEGER;
  136.     vcbVN: Str27;
  137.     vcbDrvNum: INTEGER;
  138.     vcbDRefNum: INTEGER;
  139.     vcbFSID: INTEGER;
  140.     vcbVRefNum: INTEGER;
  141.     vcbMAdr: Ptr;
  142.     vcbBufAdr: Ptr;
  143.     vcbMLen: INTEGER;
  144.     vcbDirIndex: INTEGER;
  145.     vcbDirBlk: INTEGER;
  146.     vcbVolBkUp: LONGINT;
  147.     vcbVSeqNum: INTEGER;
  148.     vcbWrCnt: LONGINT;
  149.     vcbXTClpSiz: LONGINT;
  150.     vcbCTClpSiz: LONGINT;
  151.     vcbNmRtDirs: INTEGER;
  152.     vcbFilCnt: LONGINT;
  153.     vcbDirCnt: LONGINT;
  154.     vcbFndrInfo: ARRAY [1..8] OF LONGINT;
  155.     vcbVCSize: INTEGER;
  156.     vcbVBMCSiz: INTEGER;
  157.     vcbCtlCSiz: INTEGER;
  158.     vcbXTAlBlks: INTEGER;
  159.     vcbCTAlBlks: INTEGER;
  160.     vcbXTRef: INTEGER;
  161.     vcbCTRef: INTEGER;
  162.     vcbCtlBuf: Ptr;
  163.     vcbDirIDM: LONGINT;
  164.     vcbOffsM: INTEGER;
  165.     END;
  166.  
  167. DrvQElPtr = ^DrvQEl;
  168. DrvQEl = RECORD
  169.     qLink: QElemPtr;
  170.     qType: INTEGER;
  171.     dQDrive: INTEGER;
  172.     dQRefNum: INTEGER;
  173.     dQFSID: INTEGER;
  174.     dQDrvSz: INTEGER;
  175.     dQDrvSz2: INTEGER;
  176.     END;
  177.  
  178. ParmBlkPtr = ^ParamBlockRec;
  179. ParamBlockRec = RECORD
  180.     qLink: QElemPtr;
  181.     qType: INTEGER;
  182.     ioTrap: INTEGER;
  183.     ioCmdAddr: Ptr;
  184.     ioCompletion: ProcPtr;
  185.     ioResult: OSErr;
  186.     ioNamePtr: StringPtr;
  187.     ioVRefNum: INTEGER;
  188.     CASE ParamBlkType OF
  189.       IOParam:
  190.         (ioRefNum: INTEGER;
  191.         ioVersNum: SignedByte;
  192.         ioPermssn: SignedByte;
  193.         ioMisc: Ptr;
  194.         ioBuffer: Ptr;
  195.         ioReqCount: LONGINT;
  196.         ioActCount: LONGINT;
  197.         ioPosMode: INTEGER;
  198.         ioPosOffset: LONGINT);
  199.       FileParam:
  200.         (ioFRefNum: INTEGER;
  201.         ioFVersNum: SignedByte;
  202.         filler1: SignedByte;
  203.         ioFDirIndex: INTEGER;
  204.         ioFlAttrib: SignedByte;
  205.         ioFlVersNum: SignedByte;
  206.         ioFlFndrInfo: FInfo;
  207.         ioFlNum: LONGINT;
  208.         ioFlStBlk: INTEGER;
  209.         ioFlLgLen: LONGINT;
  210.         ioFlPyLen: LONGINT;
  211.         ioFlRStBlk: INTEGER;
  212.         ioFlRLgLen: LONGINT;
  213.         ioFlRPyLen: LONGINT;
  214.         ioFlCrDat: LONGINT;
  215.         ioFlMdDat: LONGINT);
  216.       VolumeParam:
  217.         (filler2: LONGINT;
  218.         ioVolIndex: INTEGER;
  219.         ioVCrDate: LONGINT;
  220.         ioVLsBkUp: LONGINT;
  221.         ioVAtrb: INTEGER;
  222.         ioVNmFls: INTEGER;
  223.         ioVDirSt: INTEGER;
  224.         ioVBlLn: INTEGER;
  225.         ioVNmAlBlks: INTEGER;
  226.         ioVAlBlkSiz: LONGINT;
  227.         ioVClpSiz: LONGINT;
  228.         ioAlBlSt: INTEGER;
  229.         ioVNxtFNum: LONGINT;
  230.         ioVFrBlk: INTEGER);
  231.       CntrlParam:
  232.         (ioCRefNum: INTEGER;
  233.         csCode: INTEGER;
  234.         csParam: ARRAY [0..10] OF INTEGER);
  235.       SlotDevParam:
  236.         (filler3: LONGINT;
  237.         ioMix: Ptr;
  238.         ioFlags: INTEGER;
  239.         ioSlot: SignedByte;
  240.         ioID: SignedByte);
  241.       MultiDevParam:
  242.         (filler4: LONGINT;
  243.         ioMMix: Ptr;
  244.         ioMFlags: INTEGER;
  245.         ioSEBlkPtr: Ptr);
  246.     END;
  247.  
  248. EvQElPtr = ^EvQEl;
  249. EvQEl = RECORD
  250.     qLink: QElemPtr;
  251.     qType: INTEGER;
  252.     evtQWhat: INTEGER;              {this part is identical to the EventRecord as...}
  253.     evtQMessage: LONGINT;           {defined in ToolIntf}
  254.     evtQWhen: LONGINT;
  255.     evtQWhere: Point;
  256.     evtQModifiers: INTEGER;
  257.     END;
  258.  
  259. VBLTask = RECORD
  260.     qLink: QElemPtr;
  261.     qType: INTEGER;
  262.     vblAddr: ProcPtr;
  263.     vblCount: INTEGER;
  264.     vblPhase: INTEGER;
  265.     END;
  266.  
  267. DeferredTask = RECORD
  268.     qLink: QElemPtr;                {next queue entry}
  269.     qType: INTEGER;                 {queue type}
  270.     dtFlags: INTEGER;               {reserved}
  271.     dtAddr: ProcPtr;                {pointer to task}
  272.     dtParm: LONGINT;                {optional parameter}
  273.     dtReserved: LONGINT;            {reserved--should be 0}
  274.     END;
  275.  
  276. QElem = RECORD
  277.     CASE QTypes OF
  278.       dtQType:
  279.         (dtQElem: DeferredTask);    {deferred}
  280.       vType:
  281.         (vblQElem: VBLTask);        {vertical blanking}
  282.       ioQType:
  283.         (ioQElem: ParamBlockRec);   {I/O parameter block}
  284.       drvQType:
  285.         (drvQElem: DrvQEl);         {drive}
  286.       evType:
  287.         (evQElem: EvQEl);           {event}
  288.       fsQType:
  289.         (vcbQElem: VCB);            {volume control block}
  290.     END;
  291.  
  292. QHdrPtr = ^QHdr;
  293. QHdr = RECORD
  294.     qFlags: INTEGER;
  295.     qHead: QElemPtr;
  296.     qTail: QElemPtr;
  297.     END;
  298.  
  299. DateTimeRec = RECORD
  300.     year: INTEGER;
  301.     month: INTEGER;
  302.     day: INTEGER;
  303.     hour: INTEGER;
  304.     minute: INTEGER;
  305.     second: INTEGER;
  306.     dayOfWeek: INTEGER;
  307.     END;
  308.  
  309. SysEnvRec = RECORD
  310.     environsVersion: INTEGER;
  311.     machineType: INTEGER;
  312.     systemVersion: INTEGER;
  313.     processor: INTEGER;
  314.     hasFPU: BOOLEAN;
  315.     hasColorQD: BOOLEAN;
  316.     keyBoardType: INTEGER;
  317.     atDrvrVersNum: INTEGER;
  318.     sysVRefNum: INTEGER;
  319.     END;
  320.  
  321.  
  322. FUNCTION GetSysPPtr: SysPPtr;
  323.     INLINE $2EBC,$0000,$01F8;
  324. PROCEDURE SysBeep(duration: INTEGER);
  325.     INLINE $A9C8;
  326. FUNCTION KeyTrans(transData: Ptr;keycode: INTEGER;VAR state: LONGINT): LONGINT;
  327.     INLINE $A9C3;
  328. FUNCTION DTInstall(dtTaskPtr: QElemPtr): OSErr;
  329. FUNCTION GetMMUMode: SignedByte;
  330. PROCEDURE SwapMMUMode(VAR mode: SignedByte);
  331. FUNCTION SysEnvirons(versionRequested: INTEGER;VAR theWorld: SysEnvRec): OSErr;
  332. FUNCTION ReadDateTime(VAR time: LONGINT): OSErr;
  333. PROCEDURE GetDateTime(VAR secs: LONGINT);
  334. FUNCTION SetDateTime(time: LONGINT): OSErr;
  335. PROCEDURE SetTime(d: DateTimeRec);
  336. PROCEDURE GetTime(VAR d: DateTimeRec);
  337. PROCEDURE Date2Secs(d: DateTimeRec;VAR secs: LONGINT);
  338. PROCEDURE Secs2Date(secs: LONGINT;VAR d: DateTimeRec);
  339. PROCEDURE Delay(numTicks: LONGINT;VAR finalTicks: LONGINT);
  340. FUNCTION GetTrapAddress(trapNum: INTEGER): LONGINT;
  341. PROCEDURE SetTrapAddress(trapAddr: LONGINT;trapNum: INTEGER);
  342. FUNCTION NGetTrapAddress(trapNum: INTEGER;tTyp: TrapType): LONGINT;
  343. PROCEDURE NSetTrapAddress(trapAddr: LONGINT;trapNum: INTEGER;tTyp: TrapType);
  344. FUNCTION GetOSTrapAddress(trapNum: INTEGER): LONGINT;
  345. PROCEDURE SetOSTrapAddress(trapAddr: LONGINT;trapNum: INTEGER);
  346. FUNCTION GetToolTrapAddress(trapNum: INTEGER): LONGINT;
  347. PROCEDURE SetToolTrapAddress(trapAddr: LONGINT;trapNum: INTEGER);
  348. FUNCTION GetToolboxTrapAddress(trapNum: INTEGER): LONGINT;
  349. PROCEDURE SetToolboxTrapAddress(trapAddr: LONGINT;trapNum: INTEGER);
  350. FUNCTION WriteParam: OSErr;
  351. FUNCTION EqualString(str1: Str255;str2: Str255;caseSens: BOOLEAN;diacSens: BOOLEAN): BOOLEAN;
  352. PROCEDURE UprString(VAR theString: Str255;diacSens: BOOLEAN);
  353. PROCEDURE Enqueue(qElement: QElemPtr;qHeader: QHdrPtr);
  354. FUNCTION Dequeue(qElement: QElemPtr;qHeader: QHdrPtr): OSErr;
  355. FUNCTION SetCurrentA5: LONGINT;
  356.     INLINE $2E8D,$2A78,$0904;
  357. FUNCTION SetA5(newA5: LONGINT): LONGINT;
  358.     INLINE $2F4D,$0004,$2A5F;
  359. PROCEDURE Environs(VAR rom: INTEGER;VAR machine: INTEGER);
  360. FUNCTION RelString(str1: Str255;str2: Str255;caseSens: BOOLEAN;diacSens: BOOLEAN): INTEGER;
  361. FUNCTION HandToHand(VAR theHndl: Handle): OSErr;
  362. FUNCTION PtrToXHand(srcPtr: Ptr;dstHndl: Handle;size: LONGINT): OSErr;
  363. FUNCTION PtrToHand(srcPtr: Ptr;VAR dstHndl: Handle;size: LONGINT): OSErr;
  364. FUNCTION HandAndHand(hand1: Handle;hand2: Handle): OSErr;
  365. FUNCTION PtrAndHand(ptr1: Ptr;hand2: Handle;size: LONGINT): OSErr;
  366. FUNCTION InitUtil: OSErr;
  367.     INLINE $A03F,$3E80;
  368. FUNCTION SwapInstructionCache(cacheEnable: BOOLEAN): BOOLEAN;
  369. PROCEDURE FlushInstructionCache;
  370. FUNCTION SwapDataCache(cacheEnable: BOOLEAN): BOOLEAN;
  371. PROCEDURE FlushDataCache;
  372.  
  373.  
  374. {$ENDC}    { UsingOSUtils }
  375.  
  376. {$IFC NOT UsingIncludes}
  377.     END.
  378. {$ENDC}
  379.  
  380.